package TCP;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;

/**
 * Day09_Client_Thread_outclass 类表示一个客户端线程，用于处理与服务器的连接和数据收发。
 *
 * @param socket 与服务器建立的Socket连接。
 */
public class Day09_Client_Thread_outclass extends Thread {
    private Socket socket;

    /**
     * 构造函数，初始化客户端线程。
     *
     * @param socket 用于与服务器通信的Socket对象。
     */
    public Day09_Client_Thread_outclass(Socket socket) {
        this.socket = socket;
    }

    /**
     * 重写run方法，实现线程的运行逻辑。
     * 主要负责接收服务器发送的数据，并将数据打印到控制台。
     */
    @Override
    public void run() {
        // 初始化输入流，用于接收服务器数据
        try {
            InputStream inputStream =
                    socket.getInputStream();
            // 将字节流转换为字符流
            InputStreamReader inputStreamReader =
                    new InputStreamReader(inputStream);
            // 使用缓冲区加快读取速度
            BufferedReader bufferedReader =
                    new BufferedReader(inputStreamReader);
            while (true) {
                // 读取服务器发送的消息
                String info = bufferedReader.readLine();
                // 打印接收到的消息
                System.out.println(socket.getRemoteSocketAddress()+
                        "说的是："+info);
            }


        } catch (IOException e) {
            // 捕获异常，打印线程离线信息
            System.out.println
                    (socket.getRemoteSocketAddress()+
                            "离线了！");
        }


    }

}

